input
rst	:	高电平有效复位输入
clk	:	50Mhz的晶振输入
key_reft	:	高电平有效的切换键输入
key_right	:	高电平有效的调整键输入
key_up	:	高电平有效的调整加按键输入
key_down :	高电平有效的调整减按键输入
 
output
seg	:	数码管段选信号
sel	:	数码管位选信号
led	:	闹钟信号输出
 
 
 
 
module	clock_top(
input		clk,
input		rst,
input		key_left,
input		key_right,
input		key_up,
input		key_down,
output	wire	[7:0]	seg,
output	wire	[5:0]	sel,
output	wire	[7:0]	led
);
 
//定义经过pll输出的50Mhz的时钟clk0
wire	clk0 ;
wire	locked ;
 
//定义消抖后的上下左右4个按键
wire	key_left_out ;			
wire	key_right_out ;
wire	key_up_out ;
wire	key_down_out ;
 
wire	key ;					//定义一个任意按键取消闹钟报警的信号
 
wire	[7:0]	Number1 ;
wire    [7:0]	Number2 ;
wire    [7:0]	Number3 ;
wire	[2:0]	dance ;
 
wire	[7:0]
		bcd1 ,					//当前数码管一，二位显示的数字的BCD码
		bcd2 ,					//当前数码管三，四位显示的数字的BCD码
		bcd3 ;					//当前数码管五，六位显示的数字的BCD码
 
wire	flag ;
 
control		inst_control(
.clk				(clk0),
.rst				(rst),
.key_left_out		(key_left_out),
.key_right_out		(key_right_out),
.key_up_out			(key_up_out	),
.key_down_out		(key_down_out),
.Number1			(Number1),
.Number2			(Number2),
.Number3            (Number3),
.dance				(dance),
.flag				(flag),
.key				(key)
);
 
detector_clk	inst_detector_clk(
.clk 		(clk0),
.rst 		(rst),
.number1	(bcd1),
.number2	(bcd2),
.number3	(bcd3),
.dp 		(6'b101011),
.dance 		(dance),
.seg 		(seg),
.sel        (sel)
) ;	
BinToBCD_clock	inst_BinToBCD_clock1(
.bin 	(Number1),
.bcd 	(bcd1)
) ;
BinToBCD_clock	inst_BinToBCD_clock2(
.bin 	(Number2),
.bcd 	(bcd2)
) ;
BinToBCD_clock	inst_BinToBCD_clock3(
.bin 	(Number3),
.bcd 	(bcd3)
) ;
mypll	mypll_inst(
.areset ( rst ),
.inclk0 ( clk ),
.c0 	( clk0 ),
.locked ( locked )
) ;
dither_button_clock	inst_dither_button_clock(
.clk 		(clk0 	),
.rst 		(rst 	),
.key_in 	(key_left ),
.key_out	(key_left_out)
) ;
dither_button_clock	inst_dither_button_clock2(
.clk 		(clk0 	),
.rst 		(rst 	),
.key_in 	(key_right ),
.key_out	(key_right_out)
) ;
dither_button_clock	inst_dither_button_clock3(
.clk 		(clk0 	),
.rst 		(rst 	),
.key_in 	(key_up ),
.key_out	(key_up_out)
) ;
dither_button_clock	inst_dither_button_clock4(
.clk 		(clk0 	),
.rst 		(rst 	),
.key_in 	(key_down ),
.key_out	(key_down_out)
) ;
alarm	inst_alarm(
.clk	(clk),
.rst	(rst),
.key	(key),
.flag	(flag),
.led	(led)
);
endmodule
